xend: pass-through: fix pci passthrough for pv guest
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 28 Jul 2009 15:41:13 +0000 (16:41 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 28 Jul 2009 15:41:13 +0000 (16:41 +0100)
C/S 19754: a5f584c1e2f6 breaks pci passthrough for pv guest.

Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
tools/python/xen/xend/server/pciif.py

index 823a77c40ff0a07a51d95e5133e20dd1c58a0cdf..441c7b8f6877483b98e860d114986a8474df2a56 100644 (file)
@@ -403,6 +403,17 @@ class PciController(DevController):
                                     ' same guest with %s'
                                 raise VmError(err_msg % (s, dev.name))
 
+        # Assigning device staticaly (namely, the pci string in guest config
+        # file) to PV guest needs this setupOneDevice().
+        # Assigning device dynamically (namely, 'xm pci-attach') to PV guest
+        #  would go through reconfigureDevice().
+        #
+        # For hvm guest, (from c/s 19679 on) assigning device statically and
+        # dynamically both go through reconfigureDevice(), so HERE the
+        # setupOneDevice() is not necessary.
+        if not self.vm.info.is_hvm():
+            for d in pci_dev_list:
+                self.setupOneDevice(d)
         wPath = '/local/domain/0/backend/pci/%u/0/aerState' % (self.getDomid())
         self.aerStateWatch = xswatch(wPath, self._handleAerStateWatch)
         log.debug('pci: register aer watch %s', wPath)